/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package beans;
import bc.TipopapelFacadeLocal;
import be.Tinta;
import be.Tipopapel;
import be.Tipotrabajo;
import java.io.Serializable;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.enterprise.context.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import javax.inject.Named;

/**
 *
 * @author yzavaleta
 */
@Named("managedBeanTipoPapel")
@SessionScoped
public class ManagedBeanTipoPapel implements Serializable{
     @EJB
    private TipopapelFacadeLocal tipopapelFacade;
    private Tipopapel objeto;
    private Tipopapel objetoCrear;
    private List<Tipopapel> lista;
    private List<Tipopapel> listaFiltrada;
    private List<SelectItem> ListaItems = new LinkedList<SelectItem>();
    private HashMap<Integer, Tipopapel> myMapItems = new HashMap<Integer, Tipopapel>();

    public ManagedBeanTipoPapel() {
    }

    public Tipopapel getObjeto() {
        return objeto;
    }

    public void setObjeto(Tipopapel objeto) {
        this.objeto = objeto;
    }

    public Tipopapel getObjetoCrear() {
        return objetoCrear;
    }

    public void setObjetoCrear(Tipopapel objetoCrear) {
        this.objetoCrear = objetoCrear;
    }

    public List<Tipopapel> getLista() {
        // System.out.println(" LLego por aca ");
        lista = new LinkedList<>();
        for(Tipopapel a:tipopapelFacade.findAll()){
        // AGREGAR ESTADO DE EXISTENCIA AQUI.
            if(a.getEstadoExistencia()==1){
         lista.add(a);
        }
       
        }
        
     
      
        return lista;
    }

    public void setLista(List<Tipopapel> lista) {
        this.lista = lista;
    }

    public List<Tipopapel> getListaFiltrada() {
        return listaFiltrada;
    }

    public void setListaFiltrada(List<Tipopapel> listaFiltrada) {
        this.listaFiltrada = listaFiltrada;
    }

     public List<SelectItem> getListaItems() {
      llenar_myItems();
        return ListaItems;
    }

    public int getLongitudListaItems() {
        return ListaItems.size();
    }

    
    public void llenar_myItems() {
        try {
            ListaItems = new LinkedList<SelectItem>();
            myMapItems = new HashMap<Integer, Tipopapel>();
            for (Tipopapel p : tipopapelFacade.findAll()) {
                if(p.getEstadoExistencia()==1){
                myMapItems.put(p.getId(), p);
                ListaItems.add(new SelectItem(p, p.getCodigo()+ "-" + p.getDescripcion()));
                                }
                
              
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
     public Tipopapel getObjeto(int id) {
        return myMapItems.get(id);
    }
     
    public void setListaItems(List<SelectItem> ListaItems) {
        this.ListaItems = ListaItems;
    }

    public HashMap<Integer, Tipopapel> getMyMapItems() {
        return myMapItems;
    }

    public void setMyMapItems(HashMap<Integer, Tipopapel> myMapItems) {
        this.myMapItems = myMapItems;
    }
    public void crear(){
        try {
            // los estados 1 siempre son estados activos
          //  objetoCrear.setEstadoExistencia(1);
           objetoCrear.setEstadoExistencia(1);
            tipopapelFacade.create(objetoCrear);
             FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(null, new FacesMessage("REGISTRO GRABADO CON EXITO", "NUEVO ITEM"));
            
        } catch (Exception e) {
            e.printStackTrace();
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(null, new FacesMessage("ERROR AL GRABAR", "CONTACTE AL ADMINISTRADOR"));
        
        }
    }
    
    public void editar(){
        try {
          //  System.out.println("nos llega "+objeto);
            tipopapelFacade.edit(objeto);
             FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(null, new FacesMessage("REGISTRO EDITADO CON EXITO", ""));
            
        } catch (Exception e) {
            e.printStackTrace();
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(null, new FacesMessage("ERROR AL EDITAR", "CONTACTE AL ADMINISTRADOR"));
        
        }
    }
    
    public void eliminar(){
        try {
          //  System.out.println("nos llega "+objeto);
            objeto.setEstadoExistencia(2);
            tipopapelFacade.edit(objeto);
             FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(null, new FacesMessage("REGISTRO EDITADO CON EXITO", ""));
            
        } catch (Exception e) {
            e.printStackTrace();
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(null, new FacesMessage("ERROR AL EDITAR", "CONTACTE AL ADMINISTRADOR"));
        
        }
    }
    
    public void buscarTipoPapel(Tinta objeto_){
    // aqui vamos a llenar la lista
        System.out.println(" ENTRAMOS A FILTRAR EL OBJETO "+objeto_.getId());
        
        this.llenar_myItems();
    }
}
